package com.csy.service;

import com.spring.*;

@Component("userService")//单例bean：利用单例池中map<key,value>,当key（name）一样拿到的对象是一样的
@Scope("prototype")//表示当前bean是原型bean
//两者区别：
// 单例bean和原型bean是Spring框架中两种不同的bean作用域，它们在实例化方式、线程安全性以及使用场景上存在显著区别。以下是对这两者的详细比较：
//
//实例化方式
//
//单例bean：整个Spring IoC容器中只维护一个共享实例。无论有多少个bean引用了它，始终只会有一个实例被创建。
//原型bean：每次请求bean时都会创建一个新的实例。每个bean的引用都将对应一个新的实例。
//线程安全性
//
//单例bean：由于所有请求都共享同一个bean实例，因此如果该bean有状态（即有实例变量可以标志其对象所处的状态），则在多线程环境下可能会出现问题。需要开发者确保Bean中的方法是线程安全的。
//原型bean：由于每次请求都会创建一个新的实例，因此天然具有线程安全性。每个线程都可以拥有自己的bean实例，避免了线程之间的相互干扰。
//使用场景
//
//单例bean：适用于需要频繁创建新实例的情况。例如，对于每个用户请求创建一个新的Service实例，以确保每个用户都拥有独立的服务对象。
//原型bean：适用于需要全局访问点来获取或操作实例的场景。例如，数据库连接池、缓存管理器等通常被设计为单例。
public class UserServiceImpl implements UserService {

    @Autowired
    private OrderService orderService;
    private String beanName;
    private String name;

    public void setName(String name) {
        this.name = name;
    }




    public void setBeanName(String name) {
        beanName=name;
    }

    public void text(){
        System.out.println(orderService);
        System.out.println(beanName);
        System.out.println(name);

    }
}
